A communications system or network may be generally defined as a collection of computers or computing systems which interact and transmit data from one computer (i.e., node) on the network to another. The functional capabilities of the nodes may range from terminals with minimal local processing capability to complex multiprocessors capable of high speed local processing. A node incorporates a set of control functions required to ensure that network interfaces comply with networking standards or architectures. These control functions may be grouped into sets based on function. For example, in the Systems Network Architecture ("SNA") developed by International Business Machines Corporation ("IBM"), the assignee of the present invention, SNA defines a Physical Unit ("PU"), which controls operation of real network resources such as links, and a Logical Unit ("LU") which controls logical software based entities such as applications. Other networking architectures define similar functional groupings.
The communications facilities which interconnect the nodes also may vary, ranging from high speed input/output ("I/O") channels to low speed, point-to-point telephone lines. By way of example, the media used to implement the communications facilities may include satellite links or wide band optical fibers.
Referring to FIG. 1, a high level block diagram illustrating the components of an application-to-application communications network with two nodes, in this case, host computers, in a direct-attach environment is illustrated at 10. This type of view of the application-to-application communications network is sometimes referred to as an "end-to-end" view. The two host computers are illustrated at 12 and 14, respectively. The host computers, for example, may be IBM 390 Mainframe computers manufactured by International Business Machines Corporation ("IBM"), the assignee of the present invention. Each host computer has an "outbound" side 16 for sending data across the network and an "inbound" side 18 for receiving data transmitted across the network. In addition, applications execute on the host computers as illustrated at 20 and 22. Once an application has processed data and requests that data is to be sent to another node on the network, the data to be transmitted is then processed in the communications stacks 24 and 26 at the node on which the application is executing and transmitted via the system input/output ("I/O") interface 28. System I/O interface 28 also serves to assist in the receiving of data transmitted across the network.
By way of example, the present invention may also function in the communications network environment similar to that illustrated at 10' in FIG. 2. In the communications network illustrated in FIG. 2, two host computers are illustrated at 50 and 52. Host computer 50 as illustrated has the capability for managing relatively large data objects in a communications stack in accordance with the present invention. Computer 54 is a controller which simply is used as a router in the network for routing data which has been processed for transmission by host computer 50 across network 60. Applications execute on host computer 50 as illustrated at 62. Once an application has processed data and requests the data to be sent to another node on the network, the data to be transmitted is then processed in the communications stack 64.
Communications across a communications system such as that illustrated in FIGS. 1 or 2 may be controlled by a network architecture. One network architecture which may be implemented on a communications system such as that illustrated in FIGS. 1 or 2 is the Systems Network Architecture ("SNA") developed by IBM, the assignee of the present invention. SNA is a network architecture intended to allow users to construct their own private network on a communications system. An SNA network may be defined as a collection of machines or computers (i.e., nodes). There are several different types of nodes in an SNA network, including terminals, controllers that supervise the behavior of terminals and other peripherals, front-end processors which relieve the main central processing unit of the work and interrupt handling associated with data communications, and the main host computers. In essence, SNA specifies how nodes connect and communicate with one another. Moreover, SNA enables the system to share network resources by avoiding the necessity to install separate communication links for different types of workstations or dissimilar applications, and reducing the number of programs and devices.
The functions of the communications stack in an SNA network may be organized into several layers. Referring to FIG. 3, one manner of illustrating the hierarchial layers of SNA at a given node on a communications system implementing the SNA architecture (i.e., the communications stack) is shown generally at 100. Each node in the communications network operating under the SNA architecture generally has the same hierarchial software structure so as to enable communications between the nodes. In the illustration shown in FIG. 3, these layers of the communications stack include the physical control layer 102 which connects adjacent nodes physically and electrically for physically transporting bits from one machine to another, the data link control layer 104 which constructs frames from the raw bit stream for transmitting data between adjacent nodes and detecting and recovering from transmission errors in a way transparent to higher layers, the path control layer 106 (sometimes referred to as the network layer) which routes data between source and destination nodes and controls data traffic in the network, and the transmission control layer 108 (sometimes referred to as the transport layer) which creates, manages and deletes transport connections (i.e., sessions). The SNA layers also include the data flow control layer 110 (sometimes referred to as the session layer) which synchronizes data flow between end points of a session so as to establish and control a session between two end users for conversation purposes, the presentation services layer 112 which formats data for different presentation media and coordinates the sharing of resources, the transaction services layer 114 which provides application services such as distributed database access and document interchange, and finally, the network user or application layer 116 which relates to the conversation per se between two end users.
The physical control 102, data link control 104, path control 106 and transmission control 108 layers may be referred to as the "lower" layers 120 of the SNA model as it relates to the Open Systems Interface Reference Model ("OSI"). The data flow control 110, presentation services 112 and transaction services 114 layers may be referred to as the "upper" layers 122 of the architecture. Finally, the combination of the upper layers 122 and the lower layers 120 may be viewed as the communications stack 124.
The access methods which reside on the host processors provide a source of control for an SNA network. One such access method is the Virtual Telecommunications Access Method ("VTAM") which provides the interface between applications programs and a host processor and other resources in an SNA network. In essence, VTAM is a program that controls communication between terminals and application programs, and between applications, within the same or different SNA nodes. Communication between VTAM applications programs and the host and network terminals can generally occur only through VTAM. VTAM also monitors the performance of a network, identifies locations for potential problems, and assists in recovery from network failures. VTAM runs under the control of a virtual operating system such as the Multiple Virtual Storage ("MVS"), Virtual Machine/System Product ("VM/SP"), and Virtual Storage Extended ("VSE") operating systems. When operating in the MVS environment, VTAM enables independent SNA networks to communicate with each other.
VTAM application programs run under control of the operating system similar to any other programs. However, a VTAM applications program is generally connected to VTAM before it communicates with terminals or other applications in the network. A VTAM applications program uses VTAM macro instructions to communicate with terminals. An applications program within a host processor can be used at any location in the network without the program having any awareness of the organization of the network. VTAM provides the following major functions: starting and stopping the network; dynamically changing the configuration of the network; allocation of network resources; and control of input/output processing.
Referring to FIG. 4, the major components of a communications system 200 operating under VTAM including the host computer 202 containing VTAM 206 and VTAM applications programs 204 are illustrated. The host computer 202 is connected to secondary storage (i.e., auxiliary storage) 208 as well as the telecommunications network 210. The telecommunications network 210 may be divided into the SNA Terminal Environment 212 and Local 3270, BSC and Start/Stop Terminal Environment 214. In particular, the host computer is connected to the local computers and terminals such as a Local 3790 terminal 216 and a Local 3270 terminal 218. In addition, VTAM is also connected to the local communications controller 220 which may be referred to as NCP which in turn is connected to remote communications controllers 222, terminals on switched lines 224 and terminals on nonswitched lines 226.
The SNA network architecture and VTAM are described in detail in "Systems Network Architecture," Concepts and Products, IBM, GC30-3072-3, "VTAM Concepts," Independent Study Program, IBM, 1982; and Chapter 1 of the textbook entitled "Computer Networks" by Tanenbaum, Prentice Hall, Inc. (2d ed., 1988), all of which are incorporated herein by reference. VTAM also is described in detail in U.S. Pat. No. 4,586,134 entitled "Computer Network Systems and Its Use for Information Unit Transmission" and U.S. Pat. No. 5,027,269 entitled "Method and Apparatus for Providing Continuous Availability of Applications in a Computer Network," both of which are also incorporated herein by reference.
The movement of data in most communications systems can have a severe impact on the efficiency of the system. As the number and frequency of data transmissions increase, the utilization of components of a processor, such as a memory bus and central processing unit, significantly increase. The total throughput supported by the communications system may be severely limited when the inefficient use of a component causes the utilization of that component to reach maximum capacity.
Notwithstanding the negative effect on system performance caused by the transmission of large data objects, the industry trend is to transmit these large objects across a communications system using a single transmit operation whenever possible. Transmission of large objects occurs particularly in applications relating to multimedia, image and large file transfer. Once an application designates a relatively large data object to be transmitted to another node in the communications system, the relatively large data object is processed through the communications stack as a single large buffer for transmission across the network and may contain one or more network packets. Utilization of a single transmit buffer for multiple network packets allows for transmission of multiple network packets via a single transmit operation.
During processing of the relatively large data object in the communications stack from the transaction services layer 114 through the physical control layer 102 (see FIG. 3), the relatively large data object may be segmented into smaller data objects due to network restrictions on maximum transmission sizes. In addition, headers containing protocol specific information may be added at the different layers of the communications stack to the relatively large data object and/or to the newly created segments of relatively smaller data objects. Each newly created header and associated data segment are passed down to the next layer in the communications stack separate and apart from other headers and data segments. One method and system for segmenting relatively large data objects into relatively small data objects and associated headers is that described in U.S. patent application Ser. No. 08/802,597 filed concurrently with the present application and entitled "Systems and Methods for Managing the Processing of Relatively Large Data Objects in a Communications Stack," which is assigned to IBM, the assignee of the present invention, and incorporated herein by reference.
In order to accomplish the goal of transmitting large data objects (e.g., multiple data segments and associated headers) across a channel of the communications system, the headers and associated data segments may be combined into a large datastream for transmission across a channel of the communications system once the headers and associated data segments reach the physical control layer 102 (see FIG. 3). This requires loading a write transmit buffer to maximum capacity by moving or copying the headers and associated data segments into the write transmit buffer and utilizing the system I/O interface 28 (see FIGS. 1 and 2) in order to send as much data as possible across the channel of the communications system using a single write command. Thus, for those data segments and associated headers which originated from the same relatively large data objects, data blocking in a single write transmit buffer in an attempt to maximize use of system resources results in data movement or copying.
Resource sharing is another current trend used in an attempt to improve system performance when supporting multiple users. Resource sharing for supporting multiple users is often implemented through multiplexing and de-multiplexing of datastreams at the system I/O interface 28 (see FIGS. 1 and 2). An example of a system I/O interface is the IBM 390 system I/O interface developed by IBM, the assignee of the present invention.
Complications arise, however, as a result of efforts to share resources. Data obtained from different sources which is to be transmitted across a channel of a communications system is combined by copying the data into a single write transmit buffer or input/output operation buffer to allow for more efficient use of both the central processing unit and the input/output facilities. This is often achieved through the use of "multiplexing." Typically, multiplexing requires that the data be moved or copied into a single data buffer that is used to construct a single datastream for transmission across a channel of the communications system. This data movement is sometimes referred to as "data blocking." Numerous data movements occur during "data blocking," which may severely impact the performance level in the communications stack and the communications system.
In order to improve the performance of applications, such as multimedia applications, which process and transmit large data objects between nodes in a communications system, data movement and copying during processing in the communications stack and between nodes in the communications system should be eliminated, or at least significantly reduced. One solution for avoiding, or at least reducing, data movement and copying is to transmit the separate headers and associated data segments as individual headers and data segments across a channel of the communications system. Similarly, it is known to build datastreams by moving the separate header and data segments into a datastream in a sequential fashion such that each header segment is contiguous with its corresponding data segment. However, many communications systems have restrictions on memory addressing in an attempt to maintain optimal performance in a communications system.
An example of a restriction on memory addressing is a restriction on addressing "boundary" requirements. For example, there may be a 2K byte boundary requirement. In this example, assume a header having a length of 50 bytes is stored at Address 1000. The corresponding data having a length of 20K bytes is stored at Address 5000. Separate buffer list entries are required to reference the header and the data. The possible restrictions that may exist in a communications system for this example are as follows: The buffer list of pointers to the actual data must point to data having a length of 20K bytes in 2K byte increments, with the 20K byte long data segment being aligned on 2K byte boundaries. The only exceptions to this boundary requirement are that the first entry does not have to be 2K bytes in length and does not have to start on a 2K byte boundary, but must end on a 2K byte boundary; and the last entry does not have to be 2K bytes in length and does not have to end on a 2K byte boundary, but must start on a 2K byte boundary. If the header is stored separately from its corresponding data segment, a separate buffer list for the header segment is required because a separate buffer list is required for every different address area.
In the above example, if two segments are to be transmitted across the communications system, with each segment containing a header and corresponding data, avoidance of data moves to construct a single list with all four entries (i.e., header segment no. 1, data segment no. 1, header segment no. 2, and data segment no. 2) generally cannot be accomplished without violating the buffer list address rules (i.e., the 2K byte boundary restrictions).
One prior art alternative is to copy all of the header and data segments into a single transmission buffer such that the transmission buffer contains: header segment no. 1; data segment no. 1; header segment no. 2; data segment no. 2; . . . header segment no. n; data segment no. n. The single transmission buffer is then transmitted across the channel.
Another alternative approach for reducing data movement while taking into account communications system's address restrictions is to provide a separate buffer list for each segment containing a header and associated data that is to be transmitted across a channel of the communications system. As a result, no copying or movement of the data occurs. This, however, results in excessive waste of storage and space in buffers being transmitted across a channel and in possible excessive utilization of input/output procedures since no data blocking occurs.
Still another alternative approach previously used in an attempt to implement data blocking without moving or copying data and preparing the data for transmission across a channel is to copy the header, regardless of its size, into 2K byte storage areas separate and apart from the associated data segment. As a result, the storage area containing the header also contains a large amount of "garbage" data. The header along with the "garbage" data is transmitted across the channel separate from the data in order to maintain the boundary alignment.
Unfortunately, these prior art alternatives may still fall short of solving the data copy and movement problem while adhering to communications system's memory restrictions. For example, these prior art alternatives may require additional buffer lists which result in additional write operations. Furthermore, these prior alternatives also may cause large amounts of "garbage" data to be transmitted in order to maintain alignment in accordance with address boundary restrictions. Thus, storage is wasted. Still further, transmission of "garbage" data may generally have a negative impact on node and communications system performance.
In addition, the prior art may require the communications stack to get new storage units or buffers during processing without regard to the size of the data segments and headers. This, however, may result not only in excessive waste of storage since the segment sizes may bear no relationship to the overall size of the relatively large data object, but also may severely impact the performance in the communications stack due to the numerous data copies and movements.